package top.lishuoboy.hutool.http;

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.StreamProgress;
import cn.hutool.core.lang.Console;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.http.HttpUtil;

import java.util.HashMap;

public class HttpUtilTest2 {

    public static void main(String[] args) {

        // 一、get
        // 最简单的HTTP请求，可以自动通过header等信息判断编码，不区分HTTP和HTTPS
        String result1 = HttpUtil.get("https://www.baidu.com");
        Console.print("result1=={}", result1);

        // 当无法识别页面编码的时候，可以自定义请求页面的编码
        String result2 = HttpUtil.get("https://www.baidu.com", CharsetUtil.CHARSET_UTF_8);
        Console.print("result2=={}", result2);


        //可以单独传入http参数，这样参数会自动做URL编码，拼接在URL中
        HashMap<String, Object> paramMap = new HashMap<>();
        paramMap.put("city", "北京");

        String result3 = HttpUtil.get("https://www.baidu.com", paramMap);
        Console.print("result3=={}", result3);


        // 二、post
        HashMap<String, Object> paramMap2 = new HashMap<>();
        paramMap2.put("city", "北京");

        String result4 = HttpUtil.post("https://www.baidu.com", paramMap2);
        Console.log("result4=={}", result4);

        // 三、文件上传
        HashMap<String, Object> paramMap3 = new HashMap<>();
        //文件上传只需将参数中的键指定（默认file），值设为文件对象即可，对于使用者来说，文件上传与普通表单提交并无区别
        paramMap3.put("file", FileUtil.file("D:\\line.png"));

        String result5 = HttpUtil.post("https://www.baidu.com", paramMap3);
        Console.log("result5=={}", result5);

        // 四、文件下载
        String fileUrl = "http://mirrors.sohu.com/centos/7.3.1611/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso";

        //将文件下载后保存在E盘，返回结果为下载文件大小
        //        long size = HttpUtil.downloadFile(fileUrl, FileUtil.file("d:/"));


//        当然，如果我们想感知下载进度，还可以使用另一个重载方法回调感知下载进度：

        //带进度显示的文件下载
        long size = HttpUtil.downloadFile(fileUrl, FileUtil.file("e:/"), new StreamProgress() {

            @Override
            public void start() {
                Console.log("开始下载。。。。");
            }

            @Override
            public void progress(long total, long progressSize) {
                Console.log("total=={}，已下载：{}", total, FileUtil.readableFileSize(progressSize));
            }

            @Override
            public void finish() {
                Console.log("下载完成！");
            }
        });

        Console.log("Download size: " + size);
    }


}
